• logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

NPC Bankomat, Bankier, dla profesjonalnych OTS?w!

Status
Zamknięty.

jeztPolak

Active User
Dołączył
Październik 11, 2010
Posty
132
Liczba reakcji
17
Bankomat, Bankier, dla profesjonalnych OTS?w!
Skrypt by? testowany tylko pod silnikiem TFS 0.3.6pl1, je?li na inne nie dzia?a - nic nie poradz?, nie przerabiam za darmo skrypt?w. Skrypt wprowadza NPC do gry, kt?ry dzia?a na zasadzie bankomatu - na mapie postawiasz go w najbardziej ucz?stowanych miejscach, i kart? p?atnicz? wrzucasz do sklepiku na stronie.​
mapaw.png
Teraz sprawy techniczne, kt?rych jest ma?o, najwa?niejsze to, ?e NPC pisz? wielkimi literami.​
data/npc/Cash Machine.xml
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Cash Machine" script="cashmachine.lua" floorchange="0" walkinterval="0">
    <health now="500" max="500"/>
    <look typeex="11136"/>
</npc>
data/npc/scripts/cashmachine.lua
PHP:
local keywordHandler                         = KeywordHandler:new() 
local npcHandler                             = NpcHandler:new(keywordHandler) 
NpcSystem.parseParameters(npcHandler) 
talkState = {}
function onCreatureAppear(cid)                 npcHandler:onCreatureAppear(cid)             end 
function onCreatureDisappear(cid)              npcHandler:onCreatureDisappear(cid)          end 
function onCreatureSay(cid, type, msg)         npcHandler:onCreatureSay(cid, type, msg)     end 
function onThink()                             npcHandler:onThink()                         end 
NpcHandler:setMessage(MESSAGE_GREET, "WELCOME TO THE WOLRD BANKING SYSTEM!")
function creatureSayCallback(cid, type, msg)
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid 
    if (not npcHandler:isFocused(cid)) then 
        return false 
    end
    if (getPlayerItemCount(cid, 6387) == 0) then
        return npcHandler:say("YOU DO NOT HAVE A CREDIT CARD.", cid)
    end
    if (msgcontains(msg, "help")) then
        npcHandler:say("HELP CENTER :\n"..
        "» {balance} CHECKS THE STATUS OF YOUR ACCOUNT\n"..
        "» {deposit} ALLOWS YOU TO MAINTAIN A CERTAIN AMOUNT OF MONEY IN THE BANK\n"..
        "» {deposit all} ALLOW TO PRESERVATION OF THE ENTIRE SUM OF MONEY IN THE BANK\n"..
        "» {withdraw} CHOOSE ANY AMOUNT OF MONEY FROM THE BANK\n", cid)
        talkState[talkUser] = 0
    elseif (talkState[talkUser] == 10) then
        if (tonumber(msg) > 0) then
            if (getPlayerMoney(cid) >= tonumber(msg)) then
                npcHandler:say("SAVE "..tonumber(msg).." GP IN A BANK.", cid)
                doPlayerDepositMoney(cid, tonumber(msg))
                talkState[talkUser] = 0
            else
                npcHandler:say("YOU DO NOT HAVE SUCH A SUM", cid)
                talkState[talkUser] = 0
            end
        else
            npcHandler:say("NOT THE CORRECT NUMBER.", cid)
            talkState[talkUser] = 0
        end
    elseif (talkState[talkUser] == 20) then
        if (tonumber(msg) > 0) then
            if (getPlayerBalance(cid) >= tonumber(msg)) then
                npcHandler:say("RESTORE "..tonumber(msg).." GP IN A BANK.", cid)
                doPlayerWithdrawMoney(cid, tonumber(msg))
                talkState[talkUser] = 0
            else
                npcHandler:say("YOU DO NOT HAVE SUCH A SUM", cid)
                talkState[talkUser] = 0
            end
        else
            npcHandler:say("NOT THE CORRECT NUMBER.", cid)
            talkState[talkUser] = 0
        end
    elseif (msgcontains(msg, "deposit all")) then
        npcHandler:say("SAVE "..getPlayerMoney(cid).." GP IN A BANK.", cid)
        doPlayerDepositAllMoney(cid)
    elseif (msgcontains(msg, "deposit")) then
        npcHandler:say("PLEASE ENTER THE AMOUNT", cid)
        talkState[talkUser] = 10
    elseif (msgcontains(msg, "balance")) then
        npcHandler:say("THE CURRENT STATUS OF YOUR ACCOUNT IS "..getPlayerBalance(cid).." GP.", cid)
        talkState[talkUser] = 0
    elseif (msgcontains(msg, "withdraw")) then
        npcHandler:say("PLEASE ENTER THE AMOUNT", cid)
        talkState[talkUser] = 20
    end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
data/items/items.xml - na samym ko?cu
PHP:
<item id="6387" override="yes" article="a" name="bank card">
    <attribute key="weight"      value="50" />
    <attribute key="writeable"   value="0" />
</item>
?atwa instalacja, i skryptu nie trzeba konfigurowa?. Pozdrawiam wasz kochany jeztPolak!​
 
Odp: Bankomat, Bankier, dla profesjonalnych OTS?w!

O widz? postara?e? si? w skrypcie. Bardzo przydatny skrypt chyba zastosuje to u siebie na ots :D 10/10 :D
 
Odp: Bankomat, Bankier, dla profesjonalnych OTS?w!

Tak skrypt bardzo dobrze napisany tak to ujm? poniewa? jest to zwyk?y bank do kt?rego doda?e? tylko "kart? bankomatow?" kt?r? ka?esz umie?ci? w sms shopie. Teraz pytanie po jakiego komu to ? Lepiej wystawi? w domku i si? lansowa?.

Wed?ug mnie powiniene? jeszcze dorobi? do tego skryptu ?e codziennie od sumy kt?ra jest aktualnie w depozycie banku b?dzie dodawa? 10-15% (co? na zasadzie lokaty).

Tyle na m?j temat jak by? go troszk? poprawi? to by?o by nie?le ;]

Pozdrawiam
Bufo
 
Odp: Bankomat, Bankier, dla profesjonalnych OTS?w!

Musze stwierdzi? ?e pomys? ciekawy , ale jest bug kt?ry jest w silniku. Wystarczy ?e zamiast kwoty pieni?dzy (liczby) wpisz? litery to pojawia si? "wi?zad?o" w silniku (b??dy).
Ale za pomys? i skrypt daje 8/10 :)
 
Status
Zamknięty.
Do góry