[b][size=19]Wst?p[/size][/b]
Witam serdecznie w pierwszym epizodzie poradnika z serii LUA Coding (PL: Kodzimy w LUA).
Jako, ?e na forum i na og?? w internecie znajduje si? bardzo ma?o poradnik?w tego typu,
postanowi?em stworzy? serie poradnik?w, w kt?rym to poznamy: 1) J?zyk skryptowy LUA, podstawy 2) Poslugiwanie sie plikami XML 3) Tworzenie, usuwanie i wywolywanie eventow 4) Oskryptowanie wraz z wykorzystaniem funkcji MTA
5) Tworzenie komend 6) Tworzenie zapytan MySQL 7) Zarzadzanie danym zasobem 8) Estetyczny podzia? zasob?w, jaki najlepszy - i dlaczego.
Seria b?dzie obejmowa?a 8 epizod?w/cz??ci.
Ca?o?? po zako?czeniu serii b?dzie wydana w wersji offline, czyli mo?liwej do pobrania na w?asny komputer - bez potrzeby wchodzenia na forum.
Ponadto, w poradnikach nie b?d? opisywa? co dana funkcja robi, tylko jej dzia?anie.
Szczeg??y mo?na zobaczy? na angielskiej WIKI.
[b][size=19]Wprowadzenie[/size][/b]
A wi?c zaczynamy! Po pierwsze, wyja?nijmy sobie co to jest LUA i do czego si? to u?ywa.
LUA - to lekki j?zyk skryptowy o wysokiej wydajno?ci, napisany w roku 1993 przez 3 autor?w. J?zyk ten zaimplementowany jest jako ma?a biblioteka do j?zyka C.
Celem implementacji jest prostota, wydajno?? i przeno?no?? kodu.
By m?c pisa? w LUA potrzebujemy:
[LIST]
Ch?ci,
Logicznego my?lenia,
Drobnej wiedzy o j?zykach programowania,
Edytora tekstowego, w kt?rym to bedziemy pisac nasz kod.
[/LIST]
Witam. Ostatnio napisa?em sw?j pierwszy ma?y skrypt, kt?ry po wej?ciu w blip ma zmienia? skin postaci na 281 lecz gdy wejd? w marker to nic si? nie dzieje. B?d? wdzi?czny je?li kto? mi pomo?e:)
Witam, potrzebuje skrypt na zmian? wariantu przez komend?, komenda ma by? dost?pna tylko dla rangi acl ADMIN, i wy?ej.
Je?li jest ju? taki skrypt prosz?, podajcie link.
Dla pomocnika leci piwko
Siemka, da?by kto? rade zrobi? skrypt na usuni?cie WSZYSTKICH spawn?w pojazd?w z mapy? Naprzyk?ad wpisuje /deleteveh Huntley i usuwa all Huntley z mapy Najlepiej jak b?dzie to podpi?te pod acl tu daje kawa?ek skryptu na usuwanie spawnu auta w kt?rym sie jest Dzi?ki z g?ry !
Witam zaczynam programowa? w lua jestem w tym kompletnie zielony i chcia?bym aby kto? z was napisa? wszystkie funkcje i ich dzia?anie/znaczenie
-------------
Na pocz?tek chcia?bym napisa? skrypt kt?ry polega? by na wej?ciu do markera, wtedy pojawi sie okno z liczbami i ka?da liczba by?a by innym markerem na mapie np w ls,lv itp tak aby np wcisne 7 to teleportuje mnie do markeru nr7 kt?ry jest w ls itp
Odrazu dzi?kuje osobie kt?ra mi to wyt?umaczy jak to zrobi? :-).
A i tak aby np kazdy gang na serwerze mia? przypisany jeden numer do kt?rego tylko oni mog? wej?? i wyj??
Witam
Chcia?em zrobi? skrypt na otwieranie/zamykanie bram
Zrobi?em mape zombie i teraz trza zrob? skrypt na brame np./on i / off
Oczywi?cie chodzi mi o bramy przy bazach dla wybranej frakcji
Witam, ma kto? skrypt na licznik, hp pojazdu, model, paliwo na serwer Rp? Bo akutalny jest chyba co? zbugowany, poniewa? pisze bardzo cz?sto : Error:Unmachted Tilde
Witam, chcia?bym was si? zapyta? jak stworzy? skrypt kt?ry po strzeleniu lub namierzeniu celownikiem na samoch?d, pojazd by si? usuwa?... Chcia?bym prosi? was o pomoc bo jestem zielony w tych sprawach, dopiero zaczynam z stworzeniem skrypt?w a chocia? pr?buje... Dam wam zawarto?? pliku z ko?c?wk? .lua
Napisie mi czy by?em chocia? blisko, lub co mam zmieni? doradzi? co?. Z g?ry dzi?kuje, przy okazji mo?ecie mi podes?a? jaki? poradnik dla pocz?tkuj?cych jak stworzy? skrypt na serwer MTA. POZDRAWIAM
*KupVip*
Polega to na tym , ?e je?eli wpiszesz komende /kupvip
wyskoczy okno z cennikiem konta VIP
Wyskocz? na st?pujce informacje :
- Ilo?? dni
- Tre?? SMS-a
- Numer pod jaki mamy wys?a? SMS-a
Ale wiec o tym ?e wszytko dopisujesz sam !
Link :
Ukryta wiadomość / Hidden message(aby ją zobaczyć musisz postawić użytkownikowi)
Wiadomość została ukryta, aby ją przeczytać należy się zalogować.
*KupExp*
Skrypt jest podobny do ./kupvip
Tyle Tylko ?e zamiast vip jest Exp
-->>Linijki Pawno<<---
Ukryta wiadomość / Hidden message(aby ją zobaczyć musisz postawić użytkownikowi)
Wiadomość została ukryta, aby ją przeczytać należy się zalogować.
Tak jak w temacie chia?bym zrobic zapis ile gracz gra? na serwerze i kiedy ostatni raz si? logowa?.
Wiem ze do tego b?dzie potrzebna funkcja na getRealTime
Zrobi?em co? takiego ;
function zapis_grania () local time = getRealTime() local Godziny = time.hour
local Minuty = time.minute
local Senkundy = time.second
local Dni = time.monthday for _, v in pairs( getElementsByType( "player" ) ) do
if (Senkundy == 60 ) do Minuty = 1 then if (Minuty == 60 ) do Godziny = 1 then if (Godzina == 24 ) do Dni = 1 then
setElementData( v, "CzasGrania", tostring( Godzina ).. ' h '.. tostring( Minuty )..' min '.. tostring( Senkundy )..' s') end
end
end
end
end
Cze??, poszukuje dobrego kodu na ?owienie ryb do Mta.
Posiadam co? takiego:
-- --- CONFIG: local fish_count = 20 -- ile ryb bot ma zlowic
local cap_limit = 10 -- bot bedzie lowic tylko jesli cap wiekszy, niz cap_limit -- --- END OF CONFIG
if not isLocation() then return end
while (itemCount("fish") < fish_count) and (cap >= cap_limit) and fish() do wait(300,500) end
Wie kto? jaki powinien by? poprawny kod Lua ? Za pomoc daj?
Witam, ostatnio co? mnie natchn??o do stworzenia nowego menu tworzenia pojazd?w, jednak po uruchomieniu skryptu debug zwraca b??d w drugim argum?cie eventHandlera i nie potrafi? tego naprawi?
function PokazOkno()
if (guiGetVisible (lista1) == false) then
guiSetVisible(lista1, true)
guiSetAlpha ( lista1,0.99 )
showCursor ( true )
else
showCursor ( false )
guiSetVisible(lista1, false)
end
end
bindKey ("F2", "down" ,PokazOkno)
--Spawny aut
addEventHandler ( "onClientGUIDoubleClick",Przycisk[1] , spawnElegy, false )
function spawnElegy(player)
local luckyBugger = getRandomPlayer()
local x, y, z = getElementPosition ( luckyBugger )
createVehicle ( 432, x, y, z + 10 )
end
Ucz? si? j?zyka pawno ma?ymi kroczkami, mia?em od tego d?ug? przerw?, ale wcze?niej si? niczego nie nauczy?em bo si? nie stara?em, teraz mam nadziej? ?e uda mi si? opanowa? j?zyk pawno do perfekcji i chc? zada? takie pytanie...
mam taki niewielki prosty skrypt na teleport na spawna:
CMD:spawn(playerid, cmdtext[])
{
SetPlayerPos(playerid, -309, 1538, 76);
SendClientMessage(playerid, 0xD7A064FF, "**Zosta?e? przeniesiony na spawn zioom");
return 1;
}
Co nale?y dopisa? aby przenosi?o razem z pojazdem w kt?rym si? znajduje dany gracz ?
function Tabela:ParametrPojazd(model,x,y,z,PodTyp)
Pamiec = {}
Pamiec.model = model
Pamiec.PodTyp = PodTyp
Pamiec.x = x
Pamiec.y = y
Pamiec.z = z
Tabela.Zapis = Tabela.Zapis+1
setmetatable(Pamiec, Tabela)
self.__index = self
W = getmetatable(Tabela)
outputDebugString ("Create Code:"..W, 3, 112, 112, 112 )
outputDebugString ("Vehicle:"..model..", X:"..x..", Y:"..y..", Z:"..z..", Type:"..PodTyp, 3, 112, 112, 112 )
local TymczasowyPojazd = createVehicle ( model, x, y, z)
setElementData(TymczasowyPojazd,"Typ",PodTyp)
outputDebugString ("Wykonane Indeksy:"..Tabela.Zapis)
if Zapisywanie == true then
local time = getRealTime()
local tn=string.format("Operacje[%04d]/ %02d-%02d-%02d-%02d Operacja[Create Vehicle] .logs", time.year+1900, time.month, time.monthday, time.hour, time.minute) local fh=fileCreate("Pamiec Podreczna/"..tn) local ts=string.format("Operacja[Create Vehicle]:%02d,%02d,%02d,%02d",model,x,y,z,PodTyp,index) fileWrite(fh, ts.."n") fileFlush(fh)
Tabela:Wynik()
end
end
Jako i? tam nikt mi nie odpowiedzia? a nie mam najmniejszej ochoty pisa? do kogo? PW wi?c zak?adam nast?pny temat. Robi? gamemode truck i chcia?bym zrobi? okienko pokazuj?ce si? gdy kto? wsi?dzie do pojazdu o nazwie Roadtrain.
Problem w tym ?e gdy mam kod sprawdzaj?cy czy gracz jest w danym poje?dzie, okienko si? nie pokazuje, lecz gdy nic nie sprawdza kod dzia?a prawid?owo.
Kod (server-side):
function showDX(veh, costam1, costam2) local model=getElementModel(veh)
if model == 515 then
triggerClientEvent(source, "pokazGUI", source)
else end
end
function onJoin() triggerClientEvent(source, "schowajGUI") end
addEventHandler("onPlayerVehicleEnter", getResourceRootElement(), showDX) addEventHandler("onPlayerVehicleExit", getResourceRootElement(), onJoin)
Cze??, robie sw?j w?asny gamemode truck i mam do was pro?b? poniewa? mam ju? zrobione gui i gdy chc? pobra? warto?? z pliku .xml wyskakuje mi b??d @badArgument. Prosi?bym o pomoc poniewa? utkna?em i nie mam poj?cia co dalej zrobi?.
Kod odpowiadaj?cy za pobranie nazwy i ceny towaru (client-side):
[lua]function showAmmoGUI()
local towary = getResourceConfig("towary.xml")
local towar = xmlNodeGetAttribute(towary, "nazwa")
local cena = xmlNodeGetAttribute(towary, "cena")
local towarlist = guiGridListAddColumn(listaTowarow, "Towar", 0.4)
local cenalist = guiGridListAddColumn(listaTowarow, "Cena", 0.4)
if (towarlist) and (cenalist) then
local row = guiGridListAddRow(listaTowarow)
guiGridListSetItemText(listaTowarow, row, towarlist, towar, false, false)
guiGridListSetItemText(listaTowarow, row, cenalist, tonumber(cena), false, false)
guiSetVisible(delivieryWindow2, true)
showCursor(true)
end
end[/lua]
oraz plik z towarami:
[code]<towar nazwa="?mieci" cena="500"/>
<towar nazwa="Cos" cena="1000"/>
<towar nazwa="Tosty" cena="2000"/>
<towar nazwa="Kupa" cena="300"/>[/code]
B??dy wyskakuj? w tych linijkach:
[lua]local towar = xmlNodeGetAttribute(towary, "nazwa")
local cena = xmlNod...
Witajcie, mam pewien problem ze skryptem - wszystko ?adnie si? komplikuje, a gdy wchodz? do gry to nie dzia?a. Prosz? o szybk? pomoc - z g?ry dzi?kuje.
[code]CMD:sianie(playerid, params[])
{
if(DoInRange(5.0,playerid,2192.1313,-1225.9219,1049.7651))
{
SetTimerEx("sianie", 8000, false, "i", playerid);
format(params, 256, "*** %s zaczyna rozsypywa? siano w dupie ***",NickCzat(playerid));
WyswietlText(playerid,KOLOR_JA,10.0,String);
}
return 1;
}
forward sianie(playerid);
public sianie(playerid)
{
new Float:x, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
CreateObject(806, X , Y , Z , 0.00000 , 00.00000,0.00000000);
SetTimerEx("sianie2", 8000, false, "i", playerid);
return 1;
}
forward sianie2(playerid);
public sianie2(playerid)
{
new Float:x, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
CreateObject(806, X , Y , Z , 0.00000 , 00.00000,0.00000000);
SetTimerEx("sianie3", 8000, false, "i", playerid);
return 1;
}
forward sianie3(playerid);
public sianie3(playerid)
{
new Float:x, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
CreateObject(806, X , Y , Z , 0.00000 , 00.00000,0.00000000);
SetTimerEx("sianie4", 8000, false, "i", playerid);
return 1;
}
forward sianie4(playerid);
public sianie4(playerid)
{
new Float:x, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
SetTimerEx("sianie5", 8000, false, "i", player...
function vehicle(thePlayer)
if getElementType(thePlayer) == "player" then
if isPedInVehicle(thePlayer)==true then return end
if isElement( veh ) then destroyElement( veh ) end
local x,y,z = getElementPosition(thePlayer)
veh = createVehicle(522, x,y,z)
warpPedIntoVehicle(thePlayer, veh)
end
end
addEventHandler("onMarkerHit", marker, vehicle)
Cze??,
potrzebuj? pomocy z tym skryptem:
Oczywi?cie zdaj? sobie spraw?, ?e jest to include, kt?rego trzeba doda? do folderu w pawno i doda? na g?rze. http://gtao.pl.com/sh...t=scripted+fire
Zrobi?em wszystko, dos?ownie zgodnie z instrukcjami, doda?em nowe #include, w OnPlayerUpdate i OnGamemodeInit zrobi?em dos?ownie, co tam pisa?o, doda?em na dole komend? ZCMD, po kompilacji wyskakuje error, ?e w folderze INCLUDES w pliku fire2.inc nie jest zdefiniowane PlayerFaces. Lecz przej?a?em komentarze na forum, sprawdzi?em kod i nigdzie nie ma tej definicji... Z racji tego, ?e nie jestem tak zaawansowany, potrzebuj? waszej pomocy, wyjadacze. Wi?c dzi?kuj? za zainteresowanie, pozdrawiam. Je?eli jest to z?y dzia?, przepraszam, nic lepszego nie znalaz?em.[/u] Za pomoc daj? zimne
Witam Wpadlem na pomysl dodac dla swojego serwera skrypt na ktory bedzie polegac od 0 do 15 metrow cie slychac czy bedzie taka mozliwosci i z czego to zrobic?
Postawie piwo za Pomoc
i mam problem ze skryptem na bana [Nie dzia?a]
addEventHandler("onPlayer", getRootElement(), function(banPlayer, reason, bywho)
if banPlayer == "Banned" or banPlayer == "Ban" then
if reason ~= false then
outputChatBox("#00FFEAGracz "..getPlayerName(source).." #1DFF00zosta? ".. (banPlayer == "Zbanowany" and "#FF0000Zbanowany" or "#FF0000Zbanowany").." #0035FFprzez Administratora/Moderatora "..(type(bywho) == "string" and "konsole" or getPlayerName(bywho)), getRootElement(), 255, 255, 255, true)
outputChatBox("#FF0000Pow?d: "..tostring(reason), getRootElement(), 255, 255, 255, true)
else
outputChatBox("#00FFEAGracz "..getPlayerName(source).." zosta? " and "#FF0000Zbanowany" or "#FF0000Zbanowany").." #0035FFprzez Administratora "..(type(bywho) == "string" and "konsole" or getPlayerName(bywho)), getRootElement(), 255, 255, 255, true)
end
end
end)
function bindHoron( key, keyState )
if isPedInVehicle( localPlayer ) then
if ( keyState == 'down' ) then
sound = playSound3D( 'horn.mp3', getElementPosition( localPlayer ) )
setSoundVolume(desusound,5.0)
setSoundMaxDistance(desusound, 190)
attachElements( sound, getPedOccupiedVehicle( localPlayer ) )
elseif ( keyState == 'up' ) then
if isElement( sound ) then
stopSound( sound )
end
end
end
end
bindKey( 'b', 'down', bindHoron )
bindKey( 'b', 'up', bindHoron )
Witam mam tutaj taki skrypt ?e jak klika si? klawisz b to z auta s?ycha? odg?os syren chce ustawi? tak by wybrane auta modelu 596 by mo?na by?o tylko w tym poje?dzie po klikni?ciu klawisza b oddawa? g?os 3d a inne samochody nie jak mam si? do tego zabra? m?g? by kto? szczeg??owo to opisa? dam piwko jestem Zielony w Lua prosz? o szczeg??ow? pomoc Dzi?kuje.
function /sprzedajpojazd(thePlayer, matchingDimension)
if isElementWithinMarker(thePlayer, cylinder) then
setElementModel ( thePlayer, 275 )
else outputChatBox(Nie jeste? w markerze!", thePlayer, 255, 0, 0)
end
end
addCommandHandler("/sprzedajpojazd", skrypt)
Czy dobrze napisalem ?
Skrypt mial polegac na dodaniu markera jak wjedziesz autem
piszesz Sprzedaj pojazd i daje ci kase to moj 1 skryp nie wiem nawed czy dobrze go zrobilem jak zle prosze mnie poprawic bede sie doluczac
Witam.
Poszukuj? skryptu na usuwanie aut postawionych poprzez panel administratora. Wpisywa?oby si? /kasuj all i wszystkie auta by kasowa?o. Na community nie mog?em znale??, kto? pomo?e? Pozdrawiam.
Witam, mam problem ze skryptem:
[lua]addEvent("onDodajPracLPoli", true)
addEventHandler("onDodajPracLPoli", getRootElement(),
function(player, dodawany)
if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(dodawany)), aclGetGroup("PomocDrogowa")) or isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(dodawany)), aclGetGroup("Taxi")) or isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(dodawany)), aclGetGroup("Pogotowie")) or isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(dodawany)), aclGetGroup("Salon")) then
aclGroupAddObject(aclGetGroup("Policja"), "user."..dodawany)
else
outputChatBox("Ten login gracza jest ju? w innej frakcji.", player)
end
end
)[/lua]
Witam. mam pytanuie. Otoz posiadam server na gamemodzie DayZ i czy jest mozliwosc stworzenia skryptu ktory uniemozliwia wyjscie z servera podczas walki ? Lub po prostu by wyjsc trzeba odczekac np. 5sek ?