July 28th, 2013

default

без комментариев

s = ( type( npc ) == "userdata" and npc.name and npc:name() ) or "script"

Upd: а запутаться в количестве и месте "=" и скобок в этих икебанах - вообще как нефиг делать.

Upd2: А чтобы не было просто брюзжанием, добавлю, что если уж оно взялось само преобразовывать типы, так уж преобразовывало бы до конца, а не валилось бы на банальном tostring( npc ) с жалобами на неправильный оператор в консоли.

Upd3: вывел в лог, и почему-то совсем не удивлен, что на входе - преимущественно строки "".
Которые далее передаются в функцию, которая пытается разбирать их в цикле for name in string_gfind( s, "%s*(%|*%d+%|[^%|]+)%p*" ) do s_pos = string.find( name, "@", 1, true ) и т.д.