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

Wysłany: 2020-09-01, 21:34


Hokan







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



Respekt: 50

Witam potrzebuj? pomocy przy zmianie skryptu odpowiadaj?cego za kupno premium na serwerze. Mam serwer na serverprojekt oraz mam gotowy skrypt na gui z zakupem premium. Nazwy, numery oraz tre?? sms mam zmienione, lecz pojawia si? najwa?niejsza kwestia zmiany adresu na adres wykonawczy server projekt zawieraj?cym api i nie mam zielone poj?cia jak si? za to zabra?. Prosz? o pomoc.

Domy?lam si? ?e chodzi o zmian? tych linijek:

addEvent("skPremium", true)
addEventHandler("skPremium", root, function(kod, dni)
    local spr = "http://microsms.pl/api/v2/multi.php?userid=2176&code="..kod.."&serviceid=2938"
    fetchRemote(spr, wyk, "", false, client, dni)
end)


Client:


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 = 1920, 1080
www,hhh = guiGetScreenSize()
wn, hn = (www/ww), (hhh/hh)

local screenW, screenH = guiGetScreenSize()
local sx, sy = 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.43, 0.49, 0.14, 0.04, "", true)
komboboks = guiCreateComboBox(0.44, 0.34, 0.12, 0.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.3755, screenH * 0.2833, screenW * 0.2495, screenH * 0.4333, tocolor(1, 0, 0, a), false)
        exports["buttons"]:createCustomButton("Zakup",screenW * 0.4307, screenH * 0.5750, screenW * 0.1396, screenH * 0.0583, tocolor(0, 102, 204, a), false)
        exports["buttons"]:createCustomButton("X",screenW * 0.5984, screenH * 0.6685, screenW * 0.0214, screenH * 0.0389, tocolor(0, 102, 204, a2), false)
        dxDrawText(txt, (screenW * 0.4385) + 1, (screenH * 0.3648) + 1, (screenW * 0.5615) + 1, (screenH * 0.4954) + 1, tocolor(0, 0, 0, a), 1*wn, dxfont1_droidsans, "center", "center", false, false, false, false, false)
        dxDrawText(txt, screenW * 0.4385, screenH * 0.3648, screenW * 0.5615, screenH * 0.4954, tocolor(255, 255, 255, a), 1*wn, dxfont1_droidsans, "center", "center", false, false, false, false, false)
end

addEventHandler("onClientClick", root, function(b, s)
    if b ~= "state" and s ~= "down" then return end
    if mysz(screenW * 0.4307, screenH * 0.5750, screenW * 0.1396, screenH * 0.0583) and pp == true then
        if guiGetText(editbox) == "" then return end
        local dni = 0
        local wybrane = guiComboBoxGetSelected(komboboks)
        if not wybrane then return end
        local tekst = guiComboBoxGetItemText(komboboks,wybrane)
        if tekst == "1 dzie?" then
            dni = 1
        elseif tekst == "3 dni" then
            dni = 3
        elseif tekst == "7 dni" then
            dni = 7
        elseif tekst == "14 dni" then
            dni = 14
        elseif tekst == "30 dni" then
            dni = 30
        elseif tekst == "60 dni" then
            dni = 60
        else
            dni = 0
        end
        if dni == 0 then
            outputChatBox("Nie wybra?e? ilo?ci dni, wybierz i kliknij ponownie.")
            return
        end
        triggerServerEvent("skPremium", localPlayer, guiGetText(editbox), dni)
    elseif mysz(screenW * 0.5984, screenH * 0.6685, screenW * 0.0214, screenH * 0.0389) and pp == true then
        pp = false
guiSetVisible(komboboks,false)
guiSetVisible(editbox,false)
        showCursor(false)
        setElementFrozen(localPlayer,false)
        removeEventHandler("onClientPreRender", root, guiPremka)
    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(true, false)
        setElementFrozen(localPlayer,true)
        addEventHandler("onClientPreRender", root, guiPremka)
    else
        pp = false
guiSetVisible(komboboks,false)
guiSetVisible(editbox,false)
        showCursor(false)
        setElementFrozen(localPlayer,false)
        removeEventHandler("onClientPreRender", root, guiPremka)
    --    end
--    end
end
end)


function roundedRectangle(x, y, w, h, color)
  dxDrawRectangle(x, y, w, h, color, false)
  dxDrawRectangle(x + 2, y - 1, w - 4, 1, color, false)
  dxDrawRectangle(x + 2, y + h, w - 4, 1, color, false)
  dxDrawRectangle(x - 1, y + 2, 1, h - 4, color, false)
  dxDrawRectangle(x + w, y + 2, 1, h - 4, color, false)
end



Server:

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(gracz, dni)
    if sprawdzIloscDni(gracz) then
    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(kod, dni)
    local spr = "http://microsms.pl/api/v2/multi.php?userid=2176&code="..kod.."&serviceid=2938"
    fetchRemote(spr, wyk, "", false, client, dni)
end)

function wyk(responseData, errno, playerToReceive, amount)
    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(playerToReceive, amount)
        setPlayerNametagColor(playerToReceive, 255, 200, 0)
        triggerEvent("save:player",root,playerToReceive)
        triggerEvent("load:player",root,playerToReceive)
    else
        outputChatBox("Podany kod jest nieprawid?owy. ("..responseData..")", playerToReceive)
    end
end
end

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


[ Dodano: 2020-09-01, 21:45 ]
Poprawi?em skrypt lecz prosz? o sprawdzenie czy dobrze go poprawi?em.

w Client doda?em warto?? netto kt?ra potrzebna jest przy wysy?aniu do serverprojekt:

addEventHandler("onClientClick", root, function(b, s)
    if b ~= "state" and s ~= "down" then return end
    if mysz(screenW * 0.4307, screenH * 0.5750, screenW * 0.1396, screenH * 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", localPlayer, guiGetText(editbox), dni, netto)


A po strone servera doda?em taki adres:

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


Chyba wszystko zrobi?em dobrze lecz nie jestem pewny prosi?bym o sprawdzenie Stawiam Piwko :piwo:

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-01, 22:11


Wilq







Wiek: 24
Na forum: 4569 dni
Posty: 3409

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Na pierwszy rzut oka kod wygl?da okej. Po prostu go przetestuj generuj?c testowy kod premium w panelu SP. Wtedy zerknij na b??dy /debugscript 3 i je?li jakie? si? pojawi?, wklej je tutaj.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-09-01, 22:58


Hokan







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



Respekt: 50

Juz sprawdzi?em, b??d jest jeden Acces Denied dal fetchRemote, wiem juz ze musze dodac ten zas?w do admin w acl.xml jako: <object name="resource.nazwa"></object>
Aktualnie pisze autostart wszystkich zasob?w aby moc spokojnie wy??czyc serwer i zmienic to gdy? zmiana acl.xml na w??czonym serwerze i refresh nic nie daje. Dzieki za pomoc, mo?e jeszcze si? przyda

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 » Premium Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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