GTA Közösség - A magyar GTA fórum

Multi Theft Auto (MTA) => MTA: Szerverfejlesztés => Archívum => A témát indította: Paradox - 2014. Augusztus 25. - 13:12:27

Cím: Integer, string
Írta: Paradox - 2014. Augusztus 25. - 13:12:27
Üdv.
Lenne két kérdésem.
1. Hogyan lehet lekérni például egy parancsnál, hogy a parancshoz tartozó paraméter az integer vagy string és utána pedig ha például string akkor annak a feltételnek megfelelően dolgozzon tovább a kód.
2. Hogyan lehet megvizsgálni azt, hogy pl. egy karakterláncból például \"pottyoslabda\" csak annyit írok be a paraméterhez, hogy pottyos és ha nincs több pottyos nevezetű karakterlánc akkor ugye a labda -ra ugorjon és azt használja.
Cím: Integer, string
Írta: Overlord - 2014. Augusztus 25. - 16:01:25
1.:
 

function isint(n) -- http://lua-users.org/lists/lua-l/2008-11/msg00102.html
    return n==math.floor(n)
end
if tonumber(parameter_1) and isint(tonumber(parameter_1)) then
    -- egész szám
elseif not tonumber(parameter_1) then
    --szöveg
end
Cím: Integer, string
Írta: Paradox - 2014. Augusztus 25. - 16:04:06
Köszönöm szépen, nagyon hasznos. :)
Cím: Integer, string
Írta: Carlos - 2014. Augusztus 25. - 16:05:08
2.-at kicsit érthetőbben le tudod írni mert nekem nem nagyon jött le, hogy mit szeretnél.
Cím: Integer, string
Írta: Overlord - 2014. Augusztus 25. - 16:09:26
Én úgy értelmeztem ,hogy a 2.-ban erre gondolsz:
 
str = \"pöttyöslabda\"
para1 = \"pöttyös\"
if string.find(str, para1) then
    -- a para1 szerepel az str-ben
else
    -- a para1 nem szerepel az str-bben
end

 
http://lua-users.org/wiki/StringLibraryTutorial
Cím: Integer, string
Írta: Paradox - 2014. Augusztus 25. - 16:14:50
Köszönöm Oxsotus nagyon hasznos ez kell nekem.
Akadt még pár kérdésem mégpedig:
Tömbből is lehet keresni ezzel az string.find -el?
Ilyenre gondolok:
 
local array = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }

 
Illetve a megtalált eredménnyel tovább szeretnék dolgozni azt, hogyan rakjam bele egy változóba?
Cím: Integer, string
Írta: Xenius - 2014. Augusztus 25. - 18:55:04
Idézetet írta: Paradox date=1408976090\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"55555\" data-ipsquote-contentclass=\"forums_Topic
Köszönöm Oxsotus nagyon hasznos ez kell nekem.
Akadt még pár kérdésem mégpedig:
Tömbből is lehet keresni ezzel az string.find -el?
Ilyenre gondolok:
 
local array = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }

 
Illetve a megtalált eredménnyel tovább szeretnék dolgozni azt, hogyan rakjam bele egy változóba?
 

local str = \"pöttyöslabda\"
local parameters = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }
for k,v in ipairs(array) do
if str:find(parameters[v]) then
outputChatBox(v)
end
end
Cím: Integer, string
Írta: Paradox - 2014. Augusztus 25. - 19:37:52
Idézetet írta: Xenius date=1408985704\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"55555\" data-ipsquote-contentclass=\"forums_Topic


Köszönöm Oxsotus nagyon hasznos ez kell nekem.
Akadt még pár kérdésem mégpedig:
Tömbből is lehet keresni ezzel az string.find -el?
Ilyenre gondolok:
 
local array = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }

 
Illetve a megtalált eredménnyel tovább szeretnék dolgozni azt, hogyan rakjam bele egy változóba?
 

local str = \"pöttyöslabda\"
local parameters = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }
for k,v in ipairs(array) do
if str:find(parameters[v]) then
outputChatBox(v)
end
end

 

[/quote]
Elkészítettem parancsként de mindig hibát kapok rá valami nem jó.
 
local str = \"pöttyöslabda\"
local parameters = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }
addCommandHandler(\"asd\",
function(playerSource)
for k,v in ipairs(parameters) do
   if str:find(parameters[v]) then
      outputChatBox(v, playerSource)
   else
      outputChatBox(\"Nincs ilyen\", playerSource)
   end
end
end
)

 
Ez pedig a hiba kód:
bad argument #1 to \'find\' (string expected, got nil)
Cím: Integer, string
Írta: Enigma - 2014. Augusztus 25. - 20:23:29
if str:find(parameters[v]) then helyett if str:find(v) then
Cím: Integer, string
Írta: Paradox - 2014. Augusztus 25. - 20:53:01
Igen így ez a hiba megszűnt viszont nem úgy működik mint amire én törekszem.
A következő a helyzet:
Végigfut a ciklus és meg is nézi a keresési eredményeket ha megtalálja ki is írja viszont ettől függetlenül a többinek a helyére is ír ha nem az van azon a helyen amit keresek az str változóban. Például a 3. helyre van beírva, hogy diófa de az előző két helyre pedig odaírja, hogy \"Ilyen nincs\"  ami ugye az else alatt található szöveg és természetesen a 4. helyre is ez kerül. Viszont nekem pont, hogy csak egyszer kéne, hogy kiírja ha az egész tömbben nincs az a karakterlánc amit keresek.
Viszont arra lenne szükségem itt, hogy a karakterlánc egy részéből is megtalálja azt ami kell. Amint azt már fentebb vázoltam. Szóval ha csak annyit írok be, hogy dió akkor a diófára találjon rá. De ha nem csak diófa van a tömbben hanem diópálinka is akkor szintén az else alatti szöveg jelenjen meg de ha annyit keresek, hogy dióp így már a jót adja ki...
Ez lenne a fő célom ezt szeretném megvalósítani.
Cím: Integer, string
Írta: Overlord - 2014. Augusztus 26. - 10:06:45
Ha jól írtam át, ez működni fog:
 
local str = \"pöttyöslabda\"
local parameters = { \"almafa\", \"körtefa\", \"diófa\", \"meggyfa\" }
addCommandHandler(\"asd\",
function(playerSource)
local i = 0
local r = nil
for k,v in ipairs(parameters) do
   if str:find(v) then
      i = i + 1
      r = v
   end
end
if i == 1 then
   outputChatBox(r, playerSource)
else
   outputChatBox(\"Nincs ilyen\", playerSource)
end
end
)
Cím: Integer, string
Írta: Paradox - 2014. Augusztus 26. - 10:24:59
Köszönöm szépen mindenkinek a segítséget sikerült megoldani mindent.
A témát lezárom.
Cím: Integer, string
Írta: Xenius - 2014. Augusztus 26. - 10:32:07
Ja elírtam.
 
if str:find(v) then

 
nem pedig parameters[v]