Jump to content

PeterCZ

Miembro
  • Contador contenido

    0
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    PeterCZ reacted to Kenshi Torres in [C ++] Ws 3-2-1 Go sistema   
    Explicación 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. : Cuando comienza el duelo, el efecto es 3-2-1 go. Muy agradable. Si está editando archivos tipo ws, le sugiero que lo instale   
    service.h:
    #define ENABLE_3_2_1_GO pvp.cpp:
     
    # buscar void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim) # agregar debajo #ifdef ENABLE_3_2_1_GO EVENTINFO(start_duel_efect_info) { LPCHARACTER ch1; LPCHARACTER ch2; CPVP * pkPVP; BYTE state; start_duel_efect_info() : ch1( NULL ) ,ch2( NULL ) ,pkPVP( NULL ) ,state( 0 ) { } }; EVENTFUNC(start_duel_efect) { start_duel_efect_info * info = dynamic_cast<start_duel_efect_info *>(event->info); if ((info == NULL) || (info->ch1 == NULL) || (info->ch2 == NULL) || (info->pkPVP == NULL)) return 0; switch (info->state) { case 0: { info->ch1->SpecificEffectPacket("d:/ymir work/effect/pvp/3.mse"); info->ch2->SpecificEffectPacket("d:/ymir work/effect/pvp/3.mse"); info->state++; return PASSES_PER_SEC(1); break; } case 1: { info->ch1->SpecificEffectPacket("d:/ymir work/effect/pvp/2.mse"); info->ch2->SpecificEffectPacket("d:/ymir work/effect/pvp/2.mse"); info->state++; return PASSES_PER_SEC(1); break; } case 2: { info->ch1->SpecificEffectPacket("d:/ymir work/effect/pvp/1.mse"); info->ch2->SpecificEffectPacket("d:/ymir work/effect/pvp/1.mse"); info->state++; return PASSES_PER_SEC(1); break; } case 3: { info->ch1->SpecificEffectPacket("d:/ymir work/effect/pvp/go.mse"); info->ch2->SpecificEffectPacket("d:/ymir work/effect/pvp/go.mse"); if (info->pkPVP->Agree(info->ch1->GetPlayerID())) { info->ch2->ChatPacket(CHAT_TYPE_INFO, "Duelul cu: %s a inceput!", info->ch1->GetName()); info->ch1->ChatPacket(CHAT_TYPE_INFO, "Duelul cu: %s a inceput!", info->ch2->GetName()); } return 0; break; } } return 0; } #endif # buscar void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim) # Remplazar #ifdef ENABLE_3_2_1_GO void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim) { if (pkChr->IsDead() || pkVictim->IsDead() || pkChr->FindAffect(AFFECT_PVP_START)) return; CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID()); CPVP * pkPVP; if (pkPVP = Find(kPVP.m_dwCRC)) { start_duel_efect_info * info = AllocEventInfo<start_duel_efect_info>(); info->ch1 = pkChr; info->ch2 = pkVictim; info->pkPVP = pkPVP; info->state = 0; pkChr->AddAffect(AFFECT_PVP_START, APPLY_NONE, 0, 0, 5, 0, false); event_create(start_duel_efect, info, 0); return; } pkPVP = M2_NEW CPVP(kPVP); pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID()); pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID()); m_map_pkPVP.insert(map<DWORD, CPVP *>::value_type(pkPVP->m_dwCRC, pkPVP)); m_map_pkPVPSetByID[pkChr->GetPlayerID()].insert(pkPVP); m_map_pkPVPSetByID[pkVictim->GetPlayerID()].insert(pkPVP); pkPVP->Packet(); char msg[CHAT_MAX_LEN + 1]; snprintf(msg, sizeof(msg), "Ai fost provocat la duel de: %s.", pkChr->GetName()); //e el pkVictim->ChatPacket(CHAT_TYPE_INFO, msg); pkChr->ChatPacket(CHAT_TYPE_INFO, "L-ai provocat la duel pe: %s.", pkVictim->GetName()); //is eu // NOTIFY_PVP_MESSAGE LPDESC pkVictimDesc = pkVictim->GetDesc(); if (pkVictimDesc) { TPacketGCWhisper pack; int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1); pack.bHeader = HEADER_GC_WHISPER; pack.wSize = sizeof(TPacketGCWhisper) + len; pack.bType = WHISPER_TYPE_SYSTEM; strlcpy(pack.szNameFrom, pkChr->GetName(), sizeof(pack.szNameFrom)); TEMP_BUFFER buf; buf.write(&pack, sizeof(TPacketGCWhisper)); buf.write(msg, len); pkVictimDesc->Packet(buf.read_peek(), buf.size()); } // END_OF_NOTIFY_PVP_MESSAGE } #else void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim) { if (pkChr->IsDead() || pkVictim->IsDead()) return; CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID()); CPVP * pkPVP; if ((pkPVP = Find(kPVP.m_dwCRC))) { // ???oC? ?o ?O?c¬c¬e ??!¤I c©I??! if (pkPVP->Agree(pkChr->GetPlayerID())) { pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%scYO!Au?C cYe!Aa c©???!"), pkChr->GetName()); pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%scYO!Au?C cYe!Aa c©???!"), pkVictim->GetName()); } return; } pkPVP = M2_NEW CPVP(kPVP); pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID()); pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID()); m_map_pkPVP.insert(map<DWORD, CPVP *>::value_type(pkPVP->m_dwCRC, pkPVP)); m_map_pkPVPSetByID[pkChr->GetPlayerID()].insert(pkPVP); m_map_pkPVPSetByID[pkVictim->GetPlayerID()].insert(pkPVP); pkPVP->Packet(); char msg[CHAT_MAX_LEN + 1]; snprintf(msg, sizeof(msg), LC_TEXT("%scYO?? cYe!Aac©??!í?!í C©¬c©?cY?cY?. c©A©©!iC?!¤Ac¬e cYe!AaYi??Cc¬| C????a."), pkChr->GetName()); pkVictim->ChatPacket(CHAT_TYPE_INFO, msg); pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s?c§!AO cYe!Aac©??!í?!í C©¬c©?cY?cY?."), pkVictim->GetName()); // NOTIFY_PVP_MESSAGE LPDESC pkVictimDesc = pkVictim->GetDesc(); if (pkVictimDesc) { TPacketGCWhisper pack; int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1); pack.bHeader = HEADER_GC_WHISPER; pack.wSize = sizeof(TPacketGCWhisper) + len; pack.bType = WHISPER_TYPE_SYSTEM; strlcpy(pack.szNameFrom, pkChr->GetName(), sizeof(pack.szNameFrom)); TEMP_BUFFER buf; buf.write(&pack, sizeof(TPacketGCWhisper)); buf.write(msg, len); pkVictimDesc->Packet(buf.read_peek(), buf.size()); } // END_OF_NOTIFY_PVP_MESSAGE } #endif # buscar bool CPVPManager::Dead(LPCHARACTER pkChr, DWORD dwKillerPID) # remplazar #ifdef ENABLE_3_2_1_GO bool CPVPManager::Dead(LPCHARACTER pkChr, DWORD dwKillerPID) { CPVPSetMap::iterator it = m_map_pkPVPSetByID.find(pkChr->GetPlayerID()); if (it == m_map_pkPVPSetByID.end()) return false; bool found = false; sys_log(1, "PVPManager::Dead %d", pkChr->GetPlayerID()); TR1_NS::unordered_set<CPVP*>::iterator it2 = it->second.begin(); while (it2 != it->second.end()) { CPVP * pkPVP = *it2++; DWORD dwCompanionPID; if (pkPVP->m_players[0].dwPID == pkChr->GetPlayerID()) dwCompanionPID = pkPVP->m_players[1].dwPID; else dwCompanionPID = pkPVP->m_players[0].dwPID; if (dwCompanionPID == dwKillerPID) { if (pkPVP->IsFight()) { pkPVP->SetLastFightTime(); pkPVP->Win(dwKillerPID); found = true; break; } else if (get_dword_time() - pkPVP->GetLastFightTime() <= 15000) { found = true; break; } } } LPCHARACTER pkChrW = CHARACTER_MANAGER::instance().FindByPID(dwKillerPID); pkChrW->SpecificEffectPacket("d:/ymir work/effect/pvp/win.mse"); return found; } #else bool CPVPManager::Dead(LPCHARACTER pkChr, DWORD dwKillerPID) { CPVPSetMap::iterator it = m_map_pkPVPSetByID.find(pkChr->GetPlayerID()); if (it == m_map_pkPVPSetByID.end()) return false; bool found = false; sys_log(1, "PVPManager::Dead %d", pkChr->GetPlayerID()); TR1_NS::unordered_set<CPVP*>::iterator it2 = it->second.begin(); while (it2 != it->second.end()) { CPVP * pkPVP = *it2++; DWORD dwCompanionPID; if (pkPVP->m_players[0].dwPID == pkChr->GetPlayerID()) dwCompanionPID = pkPVP->m_players[1].dwPID; else dwCompanionPID = pkPVP->m_players[0].dwPID; if (dwCompanionPID == dwKillerPID) { if (pkPVP->IsFight()) { pkPVP->SetLastFightTime(); pkPVP->Win(dwKillerPID); found = true; break; } else if (get_dword_time() - pkPVP->GetLastFightTime() <= 15000) { found = true; break; } } } return found; } #endif affect.h:
     
    # buscar AFFECT_DRAGON_SOUL_DECK_1 = 542, # Agregar debajo #ifdef ENABLE_3_2_1_GO AFFECT_PVP_START = 543, AFFECT_PVP_WIN = 544, #endif # buscar AFF_BITS_MAX # Agregar debajo #ifdef ENABLE_3_2_1_GO AFF_PVP_START, AFF_PVP_WIN, #endif Finalmente, si desea que los archivos a los que he dado efecto agreguen un índice adicional, tire su paquete y luego tírelo a una carpeta, si desea desactivarlo, tírelo a su paquete actual.
     
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  2. Me Gusta
  3. Me Gusta
    PeterCZ reacted to Kenshi Torres in [C++] PingTime   
    Link de video 

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Link de descarga 
     
  4. Gracias
    PeterCZ reacted to ♥ TesT ♥ in [PY] Chat de yang   
    Buenas tardes/noches/día gente encontré este sistema en otro foro y quería compartirlos.
    Esta toda la guía para implementarlo dentro del rar, les dejo una foto para q vean q funciona

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
×
×
  • Crear nuevo...