2 Fragen

12/01/2013 19:36 123snake123#1
1. Ich suche einen Spamschutz damit nicht jeder in Map1 5 hintereinander das selbe schreiben kann.

2. Möchte bei einer PvP dropQuest verhindern das man seine eigenen chars hinstellt und killt um die items zu droppen.
Kann ich das per Quest abfragen das nur die Spieler Items droppen mit unterschielder Ip?
12/02/2013 19:55 123snake123#2
Konnte mir die fragen noch nicht beantworten, kann das einer von euch???^^
12/02/2013 20:42 .HC'Destrox#3
1. Du suchst in der uichat.py (root) nach
Code:
class ChatLine
und wenige Zeilen darunter befindet sich der Code
Code:
	def __init__(self):
Unter diese Zeile schreibst du nun (in eine neue Zeile)
Code:
		self.spamBlockText = ["", "", "", "", ""]
Jetzt suchst du nach
Code:
	def __SendChatPacket(self, text, type):
über diese Zeile fügst du folgenden Code ein:
Code:
	def CheckSpamBlock(self, text):
		for i in xrange(len(self.spamBlockText)):
			if self.spamBlockText[i] != text:
				self.spamBlockText[i] = text
				return FALSE
		return TRUE
und unter die SendChatPacket-Zeile fügst du diesen Code ein:
Code:
		if self.CheckSpamBlock(text):
			return
Untested, aber sollte funktionieren, falls nicht schreib den syserr-Eintrag hier rein.

2. Ja kann man machen - allerdings ginge das performant nur per Game, per quest (unperformant) ginge es so (einfach an Anfang des Events [when-blocks] einfügen):
Code:
local old = pc.select(npc.get_vid())
if old then
	local npc_ip = mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1]
	pc.select(old)
	if npc_ip == mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1] then
		return
	end
else
	return
end
Kind Regards
12/02/2013 21:22 123snake123#4
Er zeigt mir den fehler an "Calls undeclared function npc.get_vid"

Aber in meinem functions ist der code eingetragen
12/02/2013 21:34 .HC'Destrox#5
Welche game hast du (2089M oder 34k)?

€dit: Der Fehler kommt beim Ausführen der make.sh / make.py oder ? Dann fehlt es in den quest_functions, bist du dir sicher, dass du eine Zeile mit nur npc.get_vid hast - ohne (), ohn irgwas?

Kind Regards
12/02/2013 21:46 123snake123#6
ups habe pc statt npc eingeben, danke, muss nur noch schauen ob es funzt dazu brauche ich ne fremde ip aber das bekomm ich hin.

Kann ich da noch ne lv begrenzung einbauen das man z.b nur was droppt wenn der Level unterschied max. 10 Level beträgt?
12/03/2013 16:54 .HC'Destrox#7
Code:
local old = pc.select(npc.get_vid())
if old then
	local npc_ip = mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1]
	pc.select(old)
	if npc_ip == mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1] then
		return
	end
else
	return
end
zu
Code:
local old = pc.select(npc.get_vid())
if old then
	local npc_ip = mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1]
	local npc_level = pc.get_level()
	pc.select(old)
	if npc_ip == mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1] or npc_level+10 < pc.get_level() then
		return
	end
else
	return
end
Kind Regards
12/05/2013 19:11 123snake123#8
Die Quest funzt so nicht, wenn ich Zeile 6-13 rausnehme gehts sie einwandfrei.

Hier mal die Quest
PHP Code:
quest p1 begin   
     state start begin    
        when kill with npc
.is_pc() and pc.get_map_index()==41 and pc.get_level() >=10 begin 
        

            local old 
pc.select(npc.get_vid())
            if 
old then
                local npc_ip 
mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1]
                
local npc_level pc.get_level()
                
pc.select(old)
                if 
npc_ip == mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1] or npc_level+10 pc.get_level() then
                    
return
                
end
            
        
                local a
=number(1,6)
                if        
a==1 then
                    game
.drop_item_with_ownership("27006"1)
                
                elseif 
a==2 then
                    game
.drop_item_with_ownership("50512"1)
                
                elseif 
a==3 then
                game
.drop_item_with_ownership("50017"1)
                
                elseif 
a==4 then
                game
.drop_item_with_ownership("50018"1)
                
                elseif 
a==5 then
                    game
.drop_item_with_ownership("50019"1)
                
                elseif 
a==6 then
                    game
.drop_item_with_ownership("50020"1)
                
end
            
else
                return
            
end
                
        end            
    end 
end 
12/05/2013 19:42 .HC'Destrox#9
Code:
quest p1 begin   
     state start begin    
        when kill with npc.is_pc() and pc.get_map_index()==41 and pc.get_level() >=10 begin 
        

			syschat("Log1")
            local old = pc.select(npc.get_vid())
            if old then
                local npc_ip = mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1]
                local npc_level = pc.get_level()
                pc.select(old)
				syschat("Log2")
                if npc_ip == mysql_query("SELECT ip FROM player.player WHERE id='"..pc.get_player_id().."'")[1][1] or npc_level+10 < pc.get_level() then
					syschat("Fail2")
                    return
                end
				syschat("Log3")
            
        
                local a=number(1,6)
                if        a==1 then
                    game.drop_item_with_ownership("27006", 1)
                
                elseif a==2 then
                    game.drop_item_with_ownership("50512", 1)
                
                elseif a==3 then
                game.drop_item_with_ownership("50017", 1)
                
                elseif a==4 then
                game.drop_item_with_ownership("50018", 1)
                
                elseif a==5 then
                    game.drop_item_with_ownership("50019", 1)
                
                elseif a==6 then
                    game.drop_item_with_ownership("50020", 1)
                end
            else
				syschat("Fail1")
                return
            end
                
        end            
    end 
end
Guck ma welche Chat-Ausgaben kommen.

Kind Regards
12/05/2013 20:22 123snake123#10
Hmm ich weiß nicht wieso aber jetzt funzt die quest^^

Daaaaaaaaaaaaanke