Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2020-09-03, 16:28


Hokan







Wiek: 24
Na forum: 2978 dni
Posty: 15
Nick w MP: Hokan



Respekt: 50

Witam mam skrypt na kupno premium na serwerze. Ju? kiedy? pyta?em si? w tej kwestii na forum lecz skrypt dalej sprawia problemy.
Strona Clienta:


function isEventHandlerAdded(sEventName,pElementAttachedTo,func)
    if type(sEventName)=='string' and isElement(pElementAttachedTo) and type(func)=='function' then local aAttachedFunctions getEventHandlers(sEventName,pElementAttachedTo)
    if type(aAttachedFunctions)=='table' and #aAttachedFunctions > 0 then for i,v in ipairs(aAttachedFunctions) do if v==func then return true end end end
    end return false
end

ww,hh 19201080
www,hhh guiGetScreenSize()
wnhn = (www/ww), (hhh/hh)

local screenWscreenH guiGetScreenSize()
local sxsy guiGetScreenSize()

function mysz(psx,psy,pssx,pssy,abx,aby)
    if not isCursorShowing() then return end
    cx,cy=getCursorPosition()
    cx,cy=cx*sx,cy*sy
    if cx >= psx and cx <= psx+pssx and cy >= psy and cy <= psy+pssy then
        return true,cx,cy
    else
        return false
    end
end
local dxfont0_droidsans dxCreateFont("font.ttf"12)
local dxfont1_droidsans dxCreateFont("font.ttf"14)
local dxfont2_droidsans dxCreateFont("font.ttf"15)
local gp = {}

editbox guiCreateEdit(0.430.490.140.04""true)
komboboks guiCreateComboBox(0.440.340.120.13""true)
guiComboBoxAddItem(komboboks"1 dzie?")
guiComboBoxAddItem(komboboks"3 dni")
guiComboBoxAddItem(komboboks"7 dni")
guiComboBoxAddItem(komboboks"14 dni")
guiComboBoxAddItem(komboboks"30 dni")
guiComboBoxAddItem(komboboks"60 dni")
guiSetVisible(komboboks,false)
guiSetVisible(editbox,false)
local pp false

function guiPremka()
                local a interpolateBetween(0,0,255,255,0,255,((getTickCount()-tick)/3350),"Linear") 
                        local a2 interpolateBetween(0,0,141,141,0,141,((getTickCount()-tick)/3350),"Linear") 
        local wybrane guiComboBoxGetSelected(komboboks)
        if not wybrane then return end
        local tekst guiComboBoxGetItemText(komboboks,wybrane)
        if tekst == "1 dzie?" then
            txt="Tre?? sms: AA.SP\nNumer: 7136\nKoszt: 1,23 z?\nPoni?ej wpisz otrzymany w sms kod:"
        elseif tekst == "3 dni" then
            txt="Tre?? sms: AA.SP\nNumer: 7355\nKoszt: 3,69 z?\nPoni?ej wpisz otrzymany w sms kod:"
        elseif tekst == "7 dni" then
            txt="Tre?? sms: AA.SP\nNumer: 7555\nKoszt: 6,15 z?\nPoni?ej wpisz otrzymany w sms kod:"
        elseif tekst == "14 dni" then
            txt="Tre?? sms: AA.SP\nNumer: 7936\nKoszt: 11,07 z?\nPoni?ej wpisz otrzymany w sms kod:"
        elseif tekst == "30 dni" then
            txt="Tre?? sms: AA.SP\nNumer: 91955\nKoszt: 23,37 z?\nPoni?ej wpisz otrzymany w sms kod:"
        elseif tekst == "60 dni" then
            txt="Tre?? sms: AA.SP\nNumer: 92555\nKoszt: 30,75 z?\nPoni?ej wpisz otrzymany w sms kod:"
        else
            txt="Tre?? sms: --\nNumer: --\nKoszt: --\nPoni?ej wpisz otrzymany w sms kod:"
        end
        exports["buttons"]:createCustomWindow("Premium",screenW 0.3755screenH 0.2833screenW 0.2495screenH 0.4333tocolor(100a), false)
        exports["buttons"]:createCustomButton("Zakup",screenW 0.4307screenH 0.5750screenW 0.1396screenH 0.0583tocolor(0102204a), false)
        exports["buttons"]:createCustomButton("X",screenW 0.5984screenH 0.6685screenW 0.0214screenH 0.0389tocolor(0102204a2), false)
        dxDrawText(txt, (screenW 0.4385) + 1, (screenH 0.3648) + 1, (screenW 0.5615) + 1, (screenH 0.4954) + 1tocolor(000a), 1*wndxfont1_droidsans"center""center"falsefalsefalsefalsefalse)
        dxDrawText(txtscreenW 0.4385screenH 0.3648screenW 0.5615screenH 0.4954tocolor(255255255a), 1*wndxfont1_droidsans"center""center"falsefalsefalsefalsefalse)
end

addEventHandler("onClientClick"root, function(bs)
    if ~= "state" and ~= "down" then return end
    if mysz(screenW 0.4307screenH 0.5750screenW 0.1396screenH 0.0583) and pp == true then
        if guiGetText(editbox) == "" then return end
        local dni 0
        local netto 0
        local wybrane guiComboBoxGetSelected(komboboks)
        if not wybrane then return end
        local tekst guiComboBoxGetItemText(komboboks,wybrane)
        if tekst == "1 dzie?" then
            dni 1
            netto 1
        elseif tekst == "3 dni" then
            dni 3
            netto 3
        elseif tekst == "7 dni" then
            dni 7
            netto 5
        elseif tekst == "14 dni" then
            dni 14
            netto 9
        elseif tekst == "30 dni" then
            dni 30
            netto 19
        elseif tekst == "60 dni" then
            dni 60
            netto 25
        else
            dni 0
        end
        if dni == 0 then
            outputChatBox("Nie wybra?e? ilo?ci dni, wybierz i kliknij ponownie.")
            return
        end
        triggerServerEvent("skPremium"localPlayerguiGetText(editbox), dninetto)
    elseif mysz(screenW 0.5984screenH 0.6685screenW 0.0214screenH 0.0389) and pp == true then
        pp false
guiSetVisible(komboboks,false)
guiSetVisible(editbox,false)
        showCursor(false)
        setElementFrozen(localPlayer,false)
        removeEventHandler("onClientPreRender"rootguiPremka)
    end
end)

addCommandHandler("premium", function()
tick getTickCount()
--if getPlayerSerial(localPlayer) == "E31AEC4C62F98B8C0EA93CFB5A469042" or getPlayerSerial(localPlayer) == "AC3E4952A412CBDDDB0DA7021C88D484" then
    if not pp then
        pp true
guiSetVisible(komboboks,true)
guiSetVisible(editbox,true)
        showCursor(truefalse)
        setElementFrozen(localPlayer,true)
        addEventHandler("onClientPreRender"rootguiPremka)
    else
        pp false
guiSetVisible(komboboks,false)
guiSetVisible(editbox,false)
        showCursor(false)
        setElementFrozen(localPlayer,false)
        removeEventHandler("onClientPreRender"rootguiPremka)
    --    end
--    end
end
end)


function roundedRectangle(xywhcolor)
  dxDrawRectangle(xywhcolorfalse)
  dxDrawRectangle(2141colorfalse)
  dxDrawRectangle(2h41colorfalse)
  dxDrawRectangle(1214colorfalse)
  dxDrawRectangle(w214colorfalse)
end


Strona Servera:

function sprawdzIloscDni(gracz)
    local spr exports['pystories-db']:dbGet("SELECT * FROM pystories_users WHERE id=? AND premiumdate>NOW() LIMIT 1"getElementData(gracz,"player:sid"))
    if (spr and #spr > 0) then
        return spr[1].premiumdate
    end
    return false
end

function ustawIloscDni(graczdni)
    if sprawdzIloscDni(graczthen
    local wyk exports['pystories-db']:dbSet(string.format("UPDATE pystories_users SET premiumdate = DATE(premiumdate) + INTERVAL %d DAY WHERE id=%d",dni,getElementData(gracz,"player:sid")))
    return end
    local wyk exports['pystories-db']:dbSet(string.format("UPDATE pystories_users SET premiumdate = DATE(curdate()) + INTERVAL %d DAY WHERE id=%d",dni,getElementData(gracz,"player:sid")))
end

addEvent("skPremium"true)
addEventHandler("skPremium"root, function(koddninetto)
    local spr "https://admin.serverproject.eu/api/smsapi.php?key=TW2Gb9M5uICLCH84rZr19FoDg&amount="..netto.."&code="..kod
    fetchRemote(sprwyk""falseclientdni)
end)

function wyk(responseDataerrnoplayerToReceiveamount)
    if errno == 0 then
    if string.find(responseData"kod"then
    amount nil
        if string.find(responseData'"number":"7136"'then
            amount 1
        elseif string.find(responseData'"number":"7355"'then
            amount 3
        elseif string.find(responseData'"number":"7555"'then
            amount 7
        elseif string.find(responseData'"number":7936"'then
            amount 14
        elseif string.find(responseData'"number":"91955"'then
            amount 30
        elseif string.find(responseData'"number":"92555"'then
            amount 60
        end
        if not amount then return end
        outputChatBox("Zakupi?e? premium na "..amount.." dni."playerToReceive)
        setElementData(playerToReceive"player:premium"true)
        ustawIloscDni(playerToReceiveamount)
        setPlayerNametagColor(playerToReceive2552000)
        triggerEvent("save:player",root,playerToReceive)
        triggerEvent("load:player",root,playerToReceive)
    else
        outputChatBox("Podany kod jest nieprawid?owy. ("..responseData..")"playerToReceive)
    end
end
end

function findPlayer(pph)
    for i,v in ipairs(getElementsByType("player")) do
        if tonumber(phthen
            if getElementData(v"id") == tonumber(phthen
                return getPlayerFromName(getPlayerName(v))
            end
        else
            if string.find(string.gsub(getPlayerName(v):lower(),"#%x%x%x%x%x%x"""), ph:lower(), 1truethen
                return getPlayerFromName(getPlayerName(v))
            end
        end
    end
end


Skrypt jest dodany do acl.xml i w debugscript 3 nie ma ?adnych problem?w lecz wydaj? mi si? ?e kod wpisywany w gui po stronie clienta nie wysy?a si? poprawnie na stron? servera. Przy probie kupna premium za 1.23zl z serverproject Ci?gle pojawia si? komunikat o b??dny kod. Obs?uga Klienta z serverproject napisa?a mi, ?e kody by?y poprawne i za pierwszym razem przy wysy?aniu na stron? linka pierwsze podanie kodu zako?czy?o si? sukcesem. Prosz? o pomoc.

Oto co napisa?a mi Pomoc Klienta na serverproject:
"Witam,
b??dna implementacja u Pana. Sprawdzi?em kod 8wbuk4 i wielokrotnie odpytywa? Pan API o niego. Tylko pierwsze odpytanie zwr?ci sukces i tak by?o."

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-03, 16:41


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Ale jakie problemy? Komunikaty si? pojawiaj?, czy nie? API wykonuje zapytanie do SP, czyli dzia?a. Jakie? konkrety..

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-03, 16:52


Hokan







Wiek: 24
Na forum: 2978 dni
Posty: 15
Nick w MP: Hokan



Respekt: 50

Wed?ug odpowiedzi od serverprojekt Api wykonuje zapytanie do strony serverprojekt lecz przy wpisywaniu otrzymanego kodu z sms pojawia si? komunikat: Podany kod jest nieprawid?owy. ({"status":"fail","error":"bad_code"}) ?wiadcz?cy o tym ?e podany kod jest nieprawid?owy lub wykorzystany. Skrypt nie nadaje rangi premium na serwerze. Zastanawiam sie czy problem nie le?y po stronie klienta kt?ry b??dnie wysy?a na serwer kod z sms.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-03, 18:46


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

No tak, pierwsze zapytanie zako?czy si? sukcesem - kod zostanie wykorzystany. Drugi raz ju? odrzuci, poniewa? dany kod zosta? ju? wykorzystany. Nawet obs?uga SP potwierdzi?a dzia?anie - kod by? poprawny, czyli do fetchRemote dobrze go przekazuje. Na nowym kodzie sprawd?, czy za 1 razem nadaje Ci premium itd.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-03, 20:48


Hokan







Wiek: 24
Na forum: 2978 dni
Posty: 15
Nick w MP: Hokan



Respekt: 50

Za pierwszym razem jak u?ywa?em kod skrypt nie zadzia?a? poprawnie, nie nada?o konta Premium i chodzi o to ?e nie mog? zlokalizowa? b?edu, my?la?em ?e mo?e kod si? b??dnie przesy?a Ale w?a?nie skoro wykonuje si? dobrze za pierwszym razem po stronie serverprojekta, to nie mam poj?cia gdzie tu m?g? ukra?? si? b??d, dlatego zwracam si? O pomoc w znalezieniu b?edu

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-03, 21:02


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Chyba co? z t? linijk?:
if string.find(responseData"kod"then


Poka? ze strony SP co zwraca zapytanie w API. T? tabelk? z "number":"7355" itd.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-03, 22:53


Hokan







Wiek: 24
Na forum: 2978 dni
Posty: 15
Nick w MP: Hokan



Respekt: 50

Odno?nie serverproject to do API trzeba odnie?? sie stosuj?c cene netto za podan? opcje, np. kod 7136 odpowiada 1.23zl brutto czyli 1zl netto. W linku kt?ry ma si? porozumiewa? z API ServerProject musi by? podana w?a?nie cena netto oraz kod z sms. Wi?c link kt?ry skrypt powinien wysy?a? wygl?da nast?puj?co: https://admin.serverproject.eu/api/smsapi.php?key=TW2Gb9M5uICLCH84rZr19FoDg&amount=1&code=8wbuk4

I gdy wejde tam zdalnie ze swojego komputera nie pojawia si? na nim nic poza linijk? odpowiadaj?c? z?emu kodowi sms: {"status":"fail","error":"bad_code"}

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-04, 07:27


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Ale poka? mi tabel? z tym co zwraca API ze strony SP. Jakie konkretnie dane kiedy kod jest b??dny albo tabel? z warto?ciami SMSow.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-04, 19:23


Hokan







Wiek: 24
Na forum: 2978 dni
Posty: 15
Nick w MP: Hokan



Respekt: 50

Nie posiadam takowej tabeli, z tego co wiem nigdzie nie zapisuje mi si? co zwraca serverproject, ani w bazie danych ani w skrypcie

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-04, 20:47


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Ale ze strony serverproject w zak?adce o API.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-04, 22:23


Hokan







Wiek: 24
Na forum: 2978 dni
Posty: 15
Nick w MP: Hokan



Respekt: 50

Odpowied? serwera
Serwer zwraca zestaw danych w formacie JSON.
Je?eli podano prawid?owy zestaw parametr?w serwer zw?rci komunikat, zawieraj?cy status transakcji "ok" oraz kwot? (amount) jak? zosta? do?adowany portfel klienta, do kt?rego nale?a? dany klucz API:
{"status":"ok","amount":"1.00"}
W przypadku niepowodzenia serwer zwr?ci:
{"status":"fail","error":"kod b??du"}



Kody b??d?w:
wrong_key nieprawid?owy klucz API
wrong_amount nieprawid?owa kwota netto SMS'a
wrong_code nieprawid?owy kod do?adowuj?cy (nie podano lub z?a ilo?? znak?w)
bad_desc nieprawid?owy opis (maksymalnie 20 znak?w)
internal_error b??d wewn?trzny, problem zg?o? do BOKu
bad_code z?y kod do?adowuj?cy (wykorzystany lub nieprawid?owy)

[ Dodano: 2020-09-04, 22:23 ]
Czy chodzi o to?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-05, 22:23


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Tak, to jest to. Zaraz dam zna? co b?dziemy robi?.

Zauwa?, ?e nigdzie w tej wiadomo?ci co wys?a?e? nie ma mowy o jaki? parametrach "number" tylko "netto". Musisz to zedytowa? pod to "netto".

Linijk?
if string.find(responseData"kod"then

zmie? na
if string.find(responseData"ok"then


I daj zna? o efektach. Wklej funkcj? "wyk" po swoich zmianach.

Postaw piwo autorowi tego posta
 

 
Tagi: premium
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Odpowiedz do tematu

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku