MACIEKW89 Posted August 20, 2013 Share Posted August 20, 2013 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 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
zixxonx Posted August 21, 2013 Share Posted August 21, 2013 local function playerChat(message) if message == "!yo" then outputChatBox ("" .. tostring(getPlayerName(source)) .. " wita się z graczami!") end end addEventHandler("onPlayerChat", root, playerChat) Taki przykład. Link to comment
MACIEKW89 Posted August 28, 2013 Author Share Posted August 28, 2013 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
Mefisto_PL Posted August 28, 2013 Share Posted August 28, 2013 Skoro to komendy na race, to po jaką cholerę Ci if isVeh then, usuń local z przed function. Link to comment
Wielebny Posted August 29, 2013 Share Posted August 29, 2013 Nie ma nic złego w lokalnej funkcji, co więcej, funkcje lokalne działają szybciej. Link to comment
Mefisto_PL Posted August 29, 2013 Share Posted August 29, 2013 @UP Nie wiem, nie używam tego @MACIEKW89 A masz jakieś błędy w debugscript? Link to comment
MACIEKW89 Posted August 30, 2013 Author Share Posted August 30, 2013 @Wielebny też tak słyszałem Mam jeden błąd.... w 9 linijce ")" expected near "=" ... o co chodzi ? Link to comment
Mefisto_PL Posted August 30, 2013 Share Posted August 30, 2013 aaa.. w if gdy chcesz, aby coś było równe czemuś musisz używać dwóch znaków równości. np. if money == 250 then Link to comment
MACIEKW89 Posted August 31, 2013 Author Share Posted August 31, 2013 No dodałem te znaki równości.....nie działa (Debug: line 9 unexpected symbol near "=" ) if (message == "!buy fix") O to chodziło ? Link to comment
Mefisto_PL Posted August 31, 2013 Share Posted August 31, 2013 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
MACIEKW89 Posted August 31, 2013 Author Share Posted August 31, 2013 Wywalało błąd z IsPedInVehicle więc usunęłem tą i jedną niżej linijkę... nie działa.. 0 błędów w debugu Link to comment
fmj02 Posted September 7, 2013 Share Posted September 7, 2013 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 , ale przynajmniej problem solved. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now