Jump to content

Race komendy - onPlayerChat


Recommended Posts

Witam!

Nie dawno założyłem serwer race i staram się o to, aby gracze byli zadowoleni. A teraz do rzeczy...

Chciałbym zamienić komendy "/" na "!". To znaczy gdy gracz wpisze na czacie !buy fix zabiera mu 150$, naprawia pojazd oraz wyświetla informację o tym, że kupił naprawę.

Skrypt można powiedzieć, że jest gotowy tylko nie wiem jak podpiąć go pod onPlayerChat.

Przy okazji pewnie znajdzie się jakiś błąd xD

function czat (thePlayer) 
    local thePojazd = getPedOccupiedVehicle(thePlayer) 
    local theKasa = getPlayerMoney(thePlayer) 
    local theKoszt = 150 
    if thePojazd and theKasa then 
        if theKasa>=theKoszt and thePojazd then 
         
         
            outputChatbox(getPlayerName(thePlayer)"kupil naprawe za 150$", 255, 255, 255) 
            takePlayerMoney(thePlayer, theKoszt) 
            fixVehicle(thePojazd) 
             
             
            outputChatbox(getPlayerName(thePlayer)"kupil flip za 150$", 255, 255, 255) 
            takePlayerMoney(thePlayer, theKoszt) 
            local rootX,_,rootZ = getElementRotation(thePojazd) 
            setElementRotation(thePojazd, 0, 0, (rootX > 90 and rootX < 270) and (rootZ + 180) or rootZ) 
             
             
            outputChatbox(getPlayerName(thePlayer)"kupil nitro za 150$", 255, 255, 255) 
            takePlayerMoney(thePlayer, theKoszt) 
            addVehicleUpgrade(thePojazd, 1010) 
            end 
        elseif theKasa<=theKoszt then 
            outputChatBox("Nie masz na to kasy.", thePlayer, 225, 0, 0) 
        end 
    end 
end 
addEventHandler("onPlayerChat", czat)  

A więc jak takie cóś zrobić ?

Link to comment

Niestety nie działa :( Gdzie jest błąd?

local function czat (message, thePlayer) 
    local isVeh = isPedInVehicle(thePlayer) 
    if isVeh then 
        local vehicle = getPedOccupiedVehicle(thePlayer) 
        local money = getPlayerMoney(thePlayer) 
        local price = 150 
        if (vehicle) and (money) then 
            if(money>=price) and (vehicle) then 
                if (message = "!buy fix") or (message = "!buy repair") then 
                outputChatBox(getPlayerName(thePlayer)"kupił naprawę za 150$ (!buy fix, !buy repair)", root, 255, 255, 255) 
                takePlayerMoney(thePlayer, price) 
                fixVehicle(vehicle) 
                elseif (message = "!buy nos") or (message = "!buy nitro") then 
                outputChatBox(getPlayerName(thePlayer)"kupił nitro za 150$ (!buy nos, !buy nitro)", root, 255, 255, 255) 
                takePlayerMoney(thePlayer, price) 
                addVehicleUpgrade(vehicle, 1010) 
                elseif (message = "!buy flip") then 
                outputChatbox(getPlayerName(thePlayer)"kupil flip za 150$", 255, 255, 255) 
                takePlayerMoney(thePlayer, price) 
                local rootX,_,rootZ = getElementRotation(vehicle) 
                setElementRotation(vehicle, 0, 0, (rootX > 90 and rootX < 270) and (rootZ + 180) or rootZ) 
                end 
            elseif (money<=price) then 
                outputChatBox("No chyba cię pojebało! Nie masz kasy!", thePlayer, 255, 255, 255) 
            end 
        end  
    end 
end 
addEventHandler("onPlayerChat", root, czat) 

Link to comment
local function czat (message, thePlayer) 
    local isVeh = isPedInVehicle(thePlayer) 
    if isVeh then 
        local vehicle = getPedOccupiedVehicle(thePlayer) 
        local money = getPlayerMoney(thePlayer) 
        local price = 150 
        if (vehicle) and (money) then 
            if(money>=price) and (vehicle) then 
                if (message == "!buy fix") or (message == "!buy repair") then 
                outputChatBox(getPlayerName(thePlayer)"kupił naprawę za 150$ (!buy fix, !buy repair)", root, 255, 255, 255) 
                takePlayerMoney(thePlayer, price) 
                fixVehicle(vehicle) 
                elseif (message == "!buy nos") or (message == "!buy nitro") then 
                outputChatBox(getPlayerName(thePlayer)"kupił nitro za 150$ (!buy nos, !buy nitro)", root, 255, 255, 255) 
                takePlayerMoney(thePlayer, price) 
                addVehicleUpgrade(vehicle, 1010) 
                elseif (message == "!buy flip") then 
                outputChatbox(getPlayerName(thePlayer)"kupil flip za 150$", 255, 255, 255) 
                takePlayerMoney(thePlayer, price) 
                local rootX,_,rootZ = getElementRotation(vehicle) 
                setElementRotation(vehicle, 0, 0, (rootX > 90 and rootX < 270) and (rootZ + 180) or rootZ) 
                end 
            elseif (money<=price) then 
                outputChatBox("No chyba cię pojebało! Nie masz kasy!", thePlayer, 255, 255, 255) 
            end 
        end  
    end 
end 
addEventHandler("onPlayerChat", root, czat) 

Link to comment

Skrypt jest zakładam server-side, więc w pliku określającym zasób wiesz co masz robić. Druga sprawa: callback onPlayerChat przyjmuje dwa parametry nimi są: message, messageType. W systemie zdarzeń MTA istnieje coś takiego jak source czyli podmiot do którego jest dane zdarzenie przypisane. Zamień więc sobie:

local function czat (message, thePlayer) 

na

local function czat (message, messageType) 

oraz wszystkie thePlayer na source, no i tyle. Co do specyfikatora local to nie wiem czy on jest szybszy, parser interpretuje kod podobnie, taka różnica, że local jest dostępny tylko w danym zakresie, a global "wszędzie". Moim zdaniem to też możesz wyjebać. Also czytaj wiki, jak coś nie działa to kod jest po prostu nie zjebany ale źle napisany.

https://wiki.multitheftauto.com/wiki/OnPlayerChat

EDIT: jeszcze błąd skrawkiem oka zobaczyłem:

elseif (money<=price) then 

Nie pozwalasz kupić przedmiotu gdy twój stan pieniędzy jest niższy lub równy cenie towaru. Problem w słowie równy, skoro twoja kasa jest równa cenie czyli cie na to stać więc zamień <= na < chociaż to i tak nie istotne bo sprawdzasz czy jest równy w pierwszym warunku ale to tak tylko pisze. btw. zorientowałem sie, że odkopałem w chuj stary temat xD, ale przynajmniej problem solved.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...