Exchanger Npc

Indította rasocsabi, 2014 július 21, 11:37:48 DÉLELŐTT

Előző téma - Következő téma

rasocsabi

Sziasztok találtam a gépemen egy karakter cserélő npc-t és gondoltam megosztom veletek is. Sajnos nem teljesen magyar de nem nagy feladat fordítani.
Ime a script:
#include "ScriptPCH.h"

// 71523 - Searing Weakness - aura (2mins duration)
class npc_exchanger : public CreatureScript
{
public:
        npc_exchanger() : CreatureScript("npc_exchanger") { }

    bool OnGossipHello(Player* player, Creature* creature)
    {
        //player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Elerheto Jatekosok", GOSSIP_SENDER_MAIN, 5);
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_TALK, "Ird be a jatekos nevet akivel szeretnel cserelni", GOSSIP_SENDER_MAIN, 6, "", 0, true);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "Elfogadom, es elcserelem a karakterem", GOSSIP_SENDER_MAIN, 7);
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_DOT, "Nem szeretnek cserelni!", GOSSIP_SENDER_MAIN, 8, "Do you really want clear records?", 0, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Viszlat!", GOSSIP_SENDER_MAIN, 9);

        player->SEND_GOSSIP_MENU(1, creature->GetGUID());

        return true;
    }

    bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
    {
        player->PlayerTalkClass->ClearMenus();

if (action > 10)
{
if (Player* target = sObjectAccessor->FindPlayer(action - 10))
{
if (!target->IsInWorld())
                {
creature->MonsterWhisper("Sajnalom, de akivel szeretnel cserelni eppen nem elerheto", player->GetGUID());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", target->GetGUIDLow());
player->CLOSE_GOSSIP_MENU();
                    return true;
}

if (target->isGameMaster())
                {
creature->MonsterWhisper("Sajnalom, de nem tudja kicserelni a karaktert", player->GetGUID());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", target->GetGUIDLow());
player->CLOSE_GOSSIP_MENU();
                    return true;
}

if (player->GetSession()->GetSecurity() <> target->GetSession()->GetSecurity())
{
if (player->GetSession()->GetSecurity() > 0)
{
creature->MonsterWhisper("Sorry, you cannot exchange your VIP character to normal, now deleting the record!", player->GetGUID());
creature->MonsterWhisper("Sorry, you cannot exchange your normal character to VIP, now deleting the record!", target->GetGUID());
}
else
{
creature->MonsterWhisper("Sorry, you cannot exchange your normal character to VIP, now deleting the record!", player->GetGUID());
creature->MonsterWhisper("Sorry, you cannot exchange your VIP character to normal, now deleting the record!", target->GetGUID());
}

CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", target->GetGUIDLow());
player->CLOSE_GOSSIP_MENU();

target->RemoveAura(71523);

                    return true;
}

if (target->HasAura(71523))
{
creature->MonsterWhisper("Feldolgozas...", player->GetGUID());
creature->MonsterWhisper("Feldolgozas...", target->GetGUID());

player->RemoveAura(71523);
target->RemoveAura(71523);

player->SaveToDB();
target->SaveToDB();

uint32 playerGuid = player->GetGUIDLow();
uint32 targetGuid = target->GetGUIDLow();

uint32 playerAccount = player->GetSession()->GetAccountId();
uint32 targetAccount = target->GetSession()->GetAccountId();

player->GetSession()->KickPlayer();
target->GetSession()->KickPlayer();

CharacterDatabase.PExecute("UPDATE `characters` SET `account` = %u WHERE `guid` = '%u'", targetAccount, playerGuid);
CharacterDatabase.PExecute("UPDATE `characters` SET `account` = %u WHERE `guid` = '%u'", playerAccount, targetGuid);

return true;
}
else
{
creature->MonsterWhisper("A Buffod lejart, most torli a rekordot!", player->GetGUIDLow());
creature->MonsterWhisper("On buffja lejart, valasszunk ismet, most torli a rekordot!", target->GetGUIDLow());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", target->GetGUIDLow());
player->CLOSE_GOSSIP_MENU();
return false;
}
}
else
{
creature->MonsterWhisper("Nem lehet kivalasztani a celt", player->GetGUIDLow());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `targetGuid` = '%u'", player->GetGUIDLow());
player->CLOSE_GOSSIP_MENU();
return false;
}
player->CLOSE_GOSSIP_MENU();
return true;
}

        switch (action)
        {
case 7:
{
            QueryResult result = CharacterDatabase.PQuery("SELECT `guid`, `targetGuid` FROM `exchange` WHERE `targetGuid` = '%u' LIMIT 10", player->GetGUIDLow());
if (result)
{
do
{
if (Player* first = sObjectAccessor->FindPlayer((*result)[0].GetUInt32()))
{
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_DOT, first->GetName(), GOSSIP_SENDER_MAIN, 10 + first->GetGUIDLow(), "Do you really want exchange?", 0, false);
player->SEND_GOSSIP_MENU(1, creature->GetGUID());
}
else
{
creature->MonsterWhisper("Nem talalom a masik jatekost.", player->GetGUID());

CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `targetGuid` = '%u'", player->GetGUIDLow());

player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
}
} while (result->NextRow());
}
else
{
creature->MonsterWhisper("Nincs semmilyen arfolyam rekord!", player->GetGUID());
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
}
            break;
}
case 8:
{
creature->MonsterWhisper("Most torolve lesz az osszes rekord!", player->GetGUID());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", player->GetGUIDLow());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `targetGuid` = '%u'", player->GetGUIDLow());

player->RemoveAura(71523);

player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
break;
}
        case 9:
{
            player->CLOSE_GOSSIP_MENU();
            break;
}
        }
        return true;
    }

bool OnGossipSelectCode(Player* player, Creature* creature, uint32 uiSender, uint32 uiAction, const char* code)
    {
        player->PlayerTalkClass->ClearMenus();
        player->CLOSE_GOSSIP_MENU();

        if (uiSender == GOSSIP_SENDER_MAIN)
        {
            switch (uiAction)
            {
                case 6:
{
                    const char* plrName = code;

                    if (Player* target = sObjectAccessor->FindPlayerByName(plrName))
                    {
if (target == player)
{
creature->MonsterWhisper("Nem lehet el cserelni magad, noob!", player->GetGUID());
creature->CastCustomSpell(player, 6595, 0, 0, 0, true);
return false;
}

                        if (!target->IsInWorld())
                        {
                            creature->MonsterWhisper("Elnezest! A cel jelenleg nem elerheto!", player->GetGUID());
                            return true;
                        }

                        if (target->isGameMaster())
                        {
                            creature->MonsterWhisper("Elnezest! Nem lehet cserelni a GM karaktert", player->GetGUID());
                            return true;
                        }

if (player->GetSession()->GetSecurity() <> target->GetSession()->GetSecurity())
{
if (player->GetSession()->GetSecurity() > 0)
{
creature->MonsterWhisper("Sorry, you cannot exchange your VIP character to normal, now deleting the record!", player->GetGUID());
creature->MonsterWhisper("Sorry, you cannot exchange your normal character to VIP, now deleting the record!", target->GetGUID());
}
else
{
creature->MonsterWhisper("Sorry, you cannot exchange your normal character to VIP, now deleting the record!", player->GetGUID());
creature->MonsterWhisper("Sorry, you cannot exchange your VIP character to normal, now deleting the record!", target->GetGUID());
}

CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", target->GetGUIDLow());
player->CLOSE_GOSSIP_MENU();

target->RemoveAura(71523);

return true;
}

const char* text = "Hey! %s szeretned el  cserelni a karaktered?";
char buffalow[1024];
sprintf(buffalow, text, player->GetName());

std::string msg(buffalow);

WorldPacket data(SMSG_MESSAGECHAT, 200);

data << (uint8)CHAT_MSG_RAID_BOSS_EMOTE;
data << (uint32)LANG_UNIVERSAL;
data << (uint64)0;
data << (uint32)0;
data << (uint32)1;
data << (uint8)0;
data << (uint64)0;
data << (uint32)(msg.length() + 1);
data << msg.c_str();
data << (uint8)0;

if (target->GetSession())
target->GetSession()->SendPacket(&data);

creature->MonsterWhisper("Ha el szeretned cserelni a karaktered, kerlek, latogass el hozzam!", target->GetGUID());

creature->AddAura(71523, player);

creature->MonsterWhisper("Keres elkuldve, most torli az osszes regebbi rekordot!", player->GetGUID());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `guid` = '%u'", player->GetGUIDLow());
CharacterDatabase.PExecute("DELETE FROM `exchange` WHERE `targetGuid` = '%u'", player->GetGUIDLow());

CharacterDatabase.PExecute("INSERT INTO `exchange` (`guid`, `targetGuid`) VALUES ( '%u', '%u')", player->GetGUIDLow(), target->GetGUIDLow());
                    }
else
{
creature->MonsterWhisper("Nem talalom a jatekost!", player->GetGUID());
}
                    return true;
break;
}
            }
        }
        return false;
    }
};

void AddSC_npc_exchanger()
{
new npc_exchanger();
}

NevemSenki

Én erről még nem is halottam. Mit csinál ez konkrétan? Mi az értelme?

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

rasocsabi

2 player egymás között tudja a karaktereket kicserélni.
Pl:-Player:józsi -acc id:2
-Player2:zoltán -acc id:5
Csere megtörténik elfogadják mind a ketten akkor:
Player:józsi -acc id:5
-Player2:zoltán -acc id:2
A két ember karaktert cserélt.

Novan

Ezt a scriptet nekem írták, én ötletemmel lett megvalósítva ez a script. Egyedül Vng-nél használtam ezt a scriptet,és nem osztottam meg senkivel. Szóval Raso csak VNG-től kerülhetett hozzád, mert ügye te Vng-nél WOW configos voltál. Nem szép dolog az ügyfeleiteknek a dolgait ellopni, majd publikálni, hogy "ezt a gépemen találtam"... 

rasocsabi

VNG-s felhasználóktól semmiféle forrás fájt nemtudtunk letölteni.
Mellesleg semmiféle copyright nem található ezért osztattam itt meg.

Novan

Értem. Akkor egyszerűen rá termett a gépedre.

Aimedshot

nem mindegy?senki nem foglalkozik már wow szerverekkel, mintha bárki is felhasználná..

Novan

#7
Nekem nem a felhasználással van a problémám, mert használja mindenki egészséggel. Hanem, hogy felrakom a cuccaim, és más ellopja, és publikálja. Nem első eset volt ez már. Hostingoknak kötelessége titokban tartani az ügyfelei adatait, és fájlait, nem pedig ők maguk lemásolni a gépükre, és publikálni. Elég szánalmas dolog

rasocsabi

Még gázabb hogy pont az egyik adminod küldte novan  :-*
Aimed éna zért raktam ki hogy aki még othon probálgat annak legyen lehetősége fejlszeteni :)

Novan

raso, Adminomnak nem volt hozzáférése a dolgokhoz. Egyedül DB-hez volt joga. Tudom, hogy most szégyenled és bevallani sem mered, hogy miket csináltál, de én tudom és nekem ennyi bőven elég.

rasocsabi

Nekem se volt hozzáférésem vagyis még mindig gázos valahol a te állitásod :(

NevemSenki

Hali.

Megértem azt hogy milyen érzés mikor valamit megcsinálsz, és az kikerül a nagyvilágba és úgy érzed hogy semmi közöd hozzá. Történt már velem is ilyen.
De most arról vitatkozni hogy kié volt eredetileg, ki hol találta, ki találta ki.. hogy került ide, felesleges.
Én egy dolgot tanultam meg, ha én biztos vagyok abban hogy amit neten találok az az enyém, én találtam ki és alkottam meg, akkor csak mosolygok a dolgon. Mert tudom hogy az akkor is az enyém marad bárki teszi is közzé.
Hogy ezt a sok olvasó nem tudja, hát ez van... nem leszek kevesebb tőle.
Ha rákerestek a dolgaimra, sok érdekes helyen megtaláljátok ugyan azt. Honnan tudom hogy ugyan azt találtam amit én ide, ebbe a Fórumba írtam? Hogy a kommentek kivételével minden pontosan ugyan az, a sortörések, a változó nevek meg minden. ( Meg amiket én csináltam, nem valami általános dolog, kevesen foglalkoznak vele.  )

Én ezt az ötletet amiről a Topic szól jó dolognak tartom, sosem találkoztam még hasonlóval. De itt most egyikőtök sem tudja bizonyítani hogy kié mié ez a dolog, ha egyáltalán akármelyikőtöknek is van hozzá valami köze.

Én ezt a Script-et le fogom tölteni, el fogom tenni, és mindenkinek beleírom a nevét kommentként aki csak hozzászólt a témához.
Köszönöm a Script-et!  :)

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Novan

#12
NevemSenki, amint írtam nem a script érdekel engem, hanem hogy feltöltöm a fájlaimat az egyik wowos hostnál, és a wow confos pedig ellopja. Ez már nem első alkalom volt Raso-tól.

Amúgy a scripthez van egy SQL is, amit a Character adatbázisba kell tölteni, mert az sql nélkül dc-ni fog a szerver. Sajnos nekem már nincsenek meg ezek a dolgok, mert tönkre ment a vinyóm, és azon volt minden wowos cuccom.

rasocsabi

Kedves NevemSenki. Amit leírtál nagyon megtetszet értékelem a megközelítésed.Ezentúl énis probálom átvenni ezt a szemléletetett.

zoltta

Anno kb 2 éve ez a script megvolt Azuregos wowon is :D

ott igy mükődött : felvetted a küldit rád rakott egy pala bubit, persze egyszerre felkell venni mindkét karinak és 5-10 sec után dc-vel kicserélte a karikat. Egy karival nem müködött csak ki rakott pihenni :D ( dc )

Powered by EzPortal