Szerző Téma: Integer, string  (Megtekintve 1525 alkalommal)

Paradox

  • Vendég
Integer, string
« Dátum: 2014. augusztus 25. - 13:12:27 »
0 Show voters
Ü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.

Integer, string
« Válasz #1 Dátum: 2014. augusztus 25. - 16:01:25 »
0 Show voters
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
« Utoljára szerkesztve: 2014. augusztus 25. - 16:03:31 írta Oxsotus »

Paradox

  • Vendég
Integer, string
« Válasz #2 Dátum: 2014. augusztus 25. - 16:04:06 »
0 Show voters
Köszönöm szépen, nagyon hasznos. :)

Carlos

  • Vendég
Integer, string
« Válasz #3 Dátum: 2014. augusztus 25. - 16:05:08 »
0 Show voters
2.-at kicsit érthetőbben le tudod írni mert nekem nem nagyon jött le, hogy mit szeretnél.

Integer, string
« Válasz #4 Dátum: 2014. augusztus 25. - 16:09:26 »
0 Show voters
É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
« Utoljára szerkesztve: 2014. augusztus 25. - 16:11:08 írta Oxsotus »

Paradox

  • Vendég
Integer, string
« Válasz #5 Dátum: 2014. augusztus 25. - 16:14:50 »
0 Show voters
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?
« Utoljára szerkesztve: 2014. augusztus 25. - 17:11:04 írta Paradox »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
Integer, string
« Válasz #6 Dátum: 2014. augusztus 25. - 18:55:04 »
0 Show voters
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

Paradox

  • Vendég
Integer, string
« Válasz #7 Dátum: 2014. augusztus 25. - 19:37:52 »
0 Show voters
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)

Nem elérhető Enigma

  • 391
    • Profil megtekintése
Integer, string
« Válasz #8 Dátum: 2014. augusztus 25. - 20:23:29 »
0 Show voters
if str:find(parameters[v]) then helyett if str:find(v) then

Paradox

  • Vendég
Integer, string
« Válasz #9 Dátum: 2014. augusztus 25. - 20:53:01 »
0 Show voters
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.
« Utoljára szerkesztve: 2014. augusztus 25. - 20:54:51 írta Paradox »

Integer, string
« Válasz #10 Dátum: 2014. augusztus 26. - 10:06:45 »
0 Show voters
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
)

Paradox

  • Vendég
Integer, string
« Válasz #11 Dátum: 2014. augusztus 26. - 10:24:59 »
0 Show voters
Köszönöm szépen mindenkinek a segítséget sikerült megoldani mindent.
A témát lezárom.
« Utoljára szerkesztve: 2014. augusztus 27. - 12:24:48 írta Paradox »

Nem elérhető Xenius

  • 668
    • Profil megtekintése
Integer, string
« Válasz #12 Dátum: 2014. augusztus 26. - 10:32:07 »
0 Show voters
Ja elírtam.
 
if str:find(v) then

 
nem pedig parameters[v]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal